package dao;

import database.DBConnection;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import model.Atividade;

/**
 *
 * @author Fellipe
 */
public class LancaAtivDAO {    
    
    static int codcurso;
    static int codaluno;
    static int codprof;
        
    public static void inserir(Atividade ativ) throws SQLException {
        Connection conexao = DBConnection.getInstance();

        Statement getKey = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
                        ResultSet.CONCUR_UPDATABLE);

        String query = "SELECT CODCURSO, CODALUNO, CODPROFESSOR " +
                        "FROM CURSO, ALUNO, PROFESSOR " +
                        "WHERE NOMECURSO = '"+ativ.getNomeCurso()+"' AND NOMEALUNO = '"+ativ.getNomeAluno()+"' AND NOMEPROFESSOR = '"+ativ.getNomeProfessor()+"'";

        ResultSet rs = getKey.executeQuery(query);

        if (rs != null && rs.next()) {
            codcurso = rs.getInt("CODCURSO");
            codaluno = rs.getInt("CODALUNO");
            codprof = rs.getInt("CODPROFESSOR");
    	} else {
    		System.out.println("ERRO na busca da chave estrangeira");
    	}
    	rs.close();
    	getKey.close();
    	
    	//String sql = (String) dados.get("Insert.Cirurgia");
    	CallableStatement proc = conexao.prepareCall("{call proc_lanca_atividade(?, ?, ?, ?, ?, ?)}");    	
        try {			
                java.util.Date dataUtil = ativ.getDataRequisicao();
                java.sql.Date dataSql = new java.sql.Date(dataUtil.getTime());

                proc.setInt(1, codcurso);
                proc.setInt(2, codaluno);
                proc.setInt(3, codprof);
                proc.setInt(4, ativ.getHorasRequisitadas());
	    	proc.setDate(5, dataSql);
                proc.setString(6, ativ.getObservacao());
	    	proc.executeUpdate();
	    	System.out.println("Dados inseridos com sucesso\n");
		} catch (SQLException e) {
			System.out.println("Problema na inserção de dados");
			e.printStackTrace();
		}
	}
    
    public ArrayList pesquisarTudo() throws SQLException {
      ArrayList ativList = new ArrayList();
      //return ativList;
      Connection conexao = DBConnection.getInstance();
      String sql = "SELECT NOMEALUNO, NOMECURSO, NOMEPROFESSOR, HORASREQUISITADAS, DATAREQUISICAO FROM ATIVIDADECOMPLEMENTAR AC, PROFESSOR P, ALUNO A, CURSO C"
              + " WHERE AC.CODALUNO = A.CODALUNO AND AC.CODPROFESSOR = P.CODPROFESSOR AND AC.CODCURSO = C.CODCURSO";
      
      PreparedStatement pstmt = conexao.prepareStatement(sql);
      
      ResultSet rs = pstmt.executeQuery();
      
      while (rs.next()) {

          Atividade atividade = new Atividade(); 
          //atividade.setIdAtividade(rs.getString(1));
          atividade.setNomeAluno(rs.getString(1));
          atividade.setNomeCurso(rs.getString(2));
          atividade.setNomeProfessor(rs.getString(3));
          atividade.setHorasRequisitadas(rs.getInt(4));
          atividade.setDataRequisicao(rs.getDate(5));
          ativList.add(rs);
      }
       pstmt.close();
       return ativList;
    } 
}
